﻿using System.Collections.Generic;

namespace compshop.Infrastructure
{
    public delegate List<stateItem> StateComposition();

    public class stateItem
    {
        public string RegionName { get; private set; }
        public int Row { get; private set; }
        public int Col { get; private set; }
        public int ColSpan { get; private set; }
        public int RowSpan { get; private set; }

        public stateItem(string regionName, int row, int col, int rowSpan, int colSpan)
        {
            this.RegionName = regionName;
            this.Row = row;
            this.Col = col;
            this.ColSpan = colSpan;
            this.RowSpan = rowSpan;
        }
    }

    public static class ShellStates
    {
        #region products

        public static List<stateItem> GetProductCharachtersState()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.CategoryContent, 2, 0, 4, 5));
            list.Add(new stateItem(RegionNames.GeneralProductContent, 2, 5, 4, 8));
            list.Add(new stateItem(RegionNames.ProducerContent, 0, 5, 2, 8));
            list.Add(new stateItem(RegionNames.GeneralProductParametersContent, 6, 5, 2, 8));
            return list;
        }

        public static List<stateItem> GetOrderProductList()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.ClientOrderListContent, 0, 0, 4, 6));
            list.Add(new stateItem(RegionNames.ClientOrderEditContent, 0, 6, 4, 6));
            return list;
        }

        public static List<stateItem> GetOrderProductEdit()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.CategoryContent, 0, 0, 4, 6));
            list.Add(new stateItem(RegionNames.ClientOrderEditContent, 0, 6, 4, 6));
            list.Add(new stateItem(RegionNames.ProducerContent, 4, 6, 2, 6));
            list.Add(new stateItem(RegionNames.GeneralProductContent, 4, 0, 4, 6));
            list.Add(new stateItem(RegionNames.GeneralProductParametersContent, 6, 6, 2, 6));
            return list;
        }

        public static List<stateItem> GetWaybillsList()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.ListOfWayBillsContent, 2, 0, 4, 6));
            list.Add(new stateItem(RegionNames.ListOfGoodsInWaybillContent, 2, 6, 4, 6));
            return list;
        }

        #endregion

        #region Departments and employees

        public static List<stateItem> GetDepartmentList()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.DepartmentListContent, 0, 0, 12, 12));
            return list;
        }

        public static List<stateItem> GetPositionList()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.PositionListContent, 0, 0, 12, 12));
            return list;
        }

        public static List<stateItem> GetEmployeeList()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.EmployeeContent, 0, 0, 12, 12));
            return list;
        }

        //public static List<stateItem> GetClientOrderEditList()
        //{
        //    List<stateItem> list = new List<stateItem>();
        //    list.Add(new stateItem(RegionNames.ClientOrderEditContent, 0, 0, 12, 12));
        //    return list;
        //}

        #endregion

        #region suppliesrs
        public static List<stateItem> GetSuppliersList()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.SuppliersContent, 0, 0, 12, 12));
            return list;
        }

        public static List<stateItem> GetOrderToSupplier()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.OrdersToSupplierContent, 1, 5, 4, 8));
            return list;
        }

        public static List<stateItem> GetReceivedGoods()
        {
            List<stateItem> list = new List<stateItem>();
            list.Add(new stateItem(RegionNames.CategoryContent, 0, 0, 4, 6));
            list.Add(new stateItem(RegionNames.GeneralProductContent, 4, 0, 4, 6));
            list.Add(new stateItem(RegionNames.ProducerContent, 0, 6, 2, 6));
            list.Add(new stateItem(RegionNames.ReceiveGoodsContent, 2, 6, 2, 6));
            list.Add(new stateItem(RegionNames.GeneralProductParametersContent, 4, 6, 4, 6));
            return list;
        }
        #endregion
    }
}
